//package com.hx78.org.demo2;
//
//import com.google.api.core.ApiFuture;
//import com.google.cloud.pubsub.v1.Publisher;
//import com.google.cloud.pubsub.v1.TopicAdminClient;
//import com.google.protobuf.ByteString;
//import com.google.protobuf.util.JsonFormat;
//import com.google.pubsub.v1.Encoding;
//import com.google.pubsub.v1.PubsubMessage;
//import com.google.pubsub.v1.TopicName;
//import java.io.IOException;
//import java.util.concurrent.ExecutionException;
//import java.util.concurrent.TimeUnit;
//import utilities.StateProto.State;
//
//public class PublishProtobufMessagesExample {
//
//  public static void main(String... args) throws Exception {
//    // TODO(developer): Replace these variables before running the sample.
//    String projectId = "your-project-id";
//    // Use a topic created with a proto schema.
//    String topicId = "your-topic-id";
//
//    publishProtobufMessagesExample(projectId, topicId);
//  }
//
//  public static void publishProtobufMessagesExample(String projectId, String topicId)
//      throws IOException, ExecutionException, InterruptedException {
//
//    Encoding encoding = null;
//
//    TopicName topicName = TopicName.of(projectId, topicId);
//
//    // Get the topic encoding type.
//    try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
//      encoding = topicAdminClient.getTopic(topicName).getSchemaSettings().getEncoding();
//    }
//
//    Publisher publisher = null;
//
//    // Instantiate a protoc-generated class defined in `us-states.proto`.
//    State state = State.newBuilder().setName("Alaska").setPostAbbr("AK").build();
//
//    block:
//    try {
//      publisher = Publisher.newBuilder(topicName).build();
//
//      PubsubMessage.Builder message = PubsubMessage.newBuilder();
//
//      // Prepare an appropriately formatted message based on topic encoding.
//      switch (encoding) {
//        case BINARY:
//          message.setData(state.toByteString());
//          System.out.println("Publishing a BINARY-formatted message:\n" + message);
//          break;
//
//        case JSON:
//          String jsonString = JsonFormat.printer().omittingInsignificantWhitespace().print(state);
//          message.setData(ByteString.copyFromUtf8(jsonString));
//          System.out.println("Publishing a JSON-formatted message:\n" + message);
//          break;
//
//        default:
//          break block;
//      }
//
//      // Publish the message.
//      ApiFuture<String> future = publisher.publish(message.build());
//      System.out.println("Published message ID: " + future.get());
//
//    } finally {
//      if (publisher != null) {
//        publisher.shutdown();
//        publisher.awaitTermination(1, TimeUnit.MINUTES);
//      }
//    }
//  }
//}